package com.ankifyh.speakbridge;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.widget.Toast;

public class SpeakBridgeActivity extends Activity {

    // 新增成员变量，用于保存 App 实例，便于后续访问
    private App app;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 执行Activity的getApplication方法获取 App 实例，并将其保存到成员变量中，以便后续使用
        app = (App) getApplication();







        /// 创建一个 Runnable 对象，用于在 TextToSpeech 初始化完成后执行相关操作
        Runnable onNuiTtsInitializedRunnable = new Runnable() {
            @Override
            public void run() {
                // 从 Intent 数据中提取要合成的文本 本项目URI不是标准写法，获取的path去掉第一个符号斜杠
                //String textToSpeak = getIntent().getData().getPath().substring(1);
                Uri dataUri = getIntent().getData();

                if (dataUri != null) {
                    String host = dataUri.getHost();
                    String fragment = dataUri.getFragment();

                    if (host == null || host.isEmpty()) {
                        Log.e("MyApp", "不符合要求的URL: Host cannot be empty");
                        // 可以在这里抛出异常、显示错误提示，或者采取其他处理措施
                        finish();
                    }

                    if (fragment == null || fragment.isEmpty()) {
                        Log.e("MyApp", "不符合要求的URL: Fragment cannot be empty");
                        // 可以在这里抛出异常、显示错误提示，或者采取其他处理措施
                        finish();
                    }

                    // 如果 host 和 fragment 都不为空，则进行正常的处理逻辑
                    // 创建Toast消息
                    //Toast.makeText(getApplication(), app.getSpeaker()+": "+fragment+"（"+host+"）", Toast.LENGTH_LONG).show();

                    app.nui_tts_instance.setparamTts("font_name", host);
                    // 使用 app 实例获取 NuiTts 对象，并合成指定文本
                    app.getNuiTts().startTts("1", "", fragment);
                } else {
                    Log.e("MyApp", "不符合要求的URL: URI cannot be null");
                    // 可以在这里抛出异常、显示错误提示，或者采取其他处理措施
                    finish();
                }

            }
        };

        // 请求 app 初始化 TextToSpeech，并在初始化完成后执行上述 Runnable
        //把“发音Runnable”交给app去运行，因为按照设计要求，SpeakBridgeActivity只要闪现一下，以下简称sba
        //sba不能等待tts初始化，sba只是创建了一个Runnable给app，将后续任务委托给sba
        //URL Schema 被点击后，注册为action的name为View且data的scheme为sb的Activity会被启动，这部分是安卓系统默认机制
        //本程序利用这个有趣的机制，本着利用一切能利用的原则，摒除心理障碍，利用第一性原理进行开发
        app.initializeNuiTts(onNuiTtsInitializedRunnable);

        // 在将 Runnable 传递给 app 后，sba任务达成，隐居幕后，整个过程中，sba不涉及对tts的操作，
        finish();
    }
}